package com.example.collection

import org.junit.Test


/**
 * Set集合测试
 *
 * @author zhouronghua
 * @time 2022/3/24 11:10 下午
 */
class SetTest {

    /**
     * Set集合
     * 1.Set中的重复元素会合并
     *
     *
     */
    @Test
    fun testSet() {
        val set = setOf<String>("丽丽", "明明", "小马", "丽丽", "李来")
        // 测试集合元素
        println(set)
        // 查找集合元素
        println(set.elementAt(0))
        println(set.elementAt(1))
        println(set.elementAt(2))
        println(set.elementAt(3))
        // 第5个元素不存在会越界抛出java.lang.IndexOutOfBoundsException
//        println(set.elementAt(4))
        // 安全输出：越界元素输出null
        println(set.elementAtOrNull(4))
        println(set.elementAtOrElse(4) {
            "你越界了"
        })
    }

    /**
     * 测试可变Set
     *
     * @author zhouronghua
     * @time 2023/4/7 4:01 PM
     */
    @Test
    fun testMutableSet() {
        val set = mutableSetOf<String>("丽丽", "明明", "小马", "丽丽", "李来")
        println(set)
        println(set.elementAtOrNull(4))
        println(set.elementAtOrElse(4) {
            "你越界了"
        })
        // 添加一个元素
        set.add("小明王")
        println(set.elementAtOrElse(4) {
            "你越界了"
        })
    }

    /**
     * 测试列表元素去重
     *
     *
     */
    @Test
    fun testListCompact() {
        val list = listOf("丽丽", "明明", "小马", "丽丽", "李来")
        println(list)
        // 测试List元素去重
        println("==测试列表元素去重==")
        val set = list.toSet()
        println(set)
        // 测试通过distinct去重
        println("==测试List列表元素distinct去重==")
        val list2 = list.distinct()
        println(list2)
    }

    /**
     * 列表转Set
     *
     * @author zhouronghua
     * @time 2023/4/7 4:05 PM
     */
    @Test
    fun testListToSet() {
        val list = listOf("丽丽", "明明", "小马", "丽丽", "李来")
        println(list)
        println("List转换为Set")
        // List转变为Set去重
        val set = list.toMutableSet()
        println(set)
        println("Set转List")
        val list2 = set.toMutableList()
        println(list2)
    }
}